"""
MCP AI 演示启动脚本
一键启动AI增强的MCP演示
"""
import asyncio
import subprocess
import time
import sys
import webbrowser
from pathlib import Path


async def check_dependencies():
    """检查依赖"""
    print("🔍 检查依赖...")
    
    try:
        import uvicorn
        import fastapi
        import httpx
        import websockets
        print("✅ 所有依赖已安装")
        return True
    except ImportError as e:
        print(f"❌ 缺少依赖: {e}")
        print("请运行: pip install -r requirements.txt")
        return False


def start_ai_server():
    """启动AI增强的MCP服务器"""
    print("🚀 启动AI增强的MCP服务器...")
    
    # 启动服务器进程
    server_process = subprocess.Popen([
        sys.executable, "mcp_ai_server.py"
    ], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    
    # 等待服务器启动
    print("⏳ 等待服务器启动...")
    time.sleep(3)
    
    return server_process


async def run_ai_demo():
    """运行AI演示"""
    print("\n🤖 开始AI工具演示...")
    
    # 运行AI工具测试
    from test_ai_tools import main as run_ai_tests
    await run_ai_tests()


def open_web_interface():
    """打开Web界面"""
    print("\n🌐 打开Web界面...")
    
    try:
        webbrowser.open("http://localhost:8000")
        print("✅ Web界面已在浏览器中打开")
    except Exception as e:
        print(f"❌ 无法打开浏览器: {e}")
        print("请手动访问: http://localhost:8000")


async def main():
    """主演示流程"""
    print("🎯 MCP AI模型集成演示")
    print("=" * 50)
    print("本演示展示如何将Qwen AI模型集成到MCP系统中")
    print("包含5个AI工具：对话、代码审查、文档生成、内容总结、翻译")
    print()
    
    # 检查依赖
    if not await check_dependencies():
        return
    
    # 启动服务器
    server_process = start_ai_server()
    
    try:
        # 运行AI演示
        await run_ai_demo()
        
        # 打开Web界面用于手动测试
        print("\n" + "="*50)
        print("📋 演示完成！现在可以通过以下方式测试AI功能：")
        print("1. Web界面 - 图形化交互")
        print("2. API调用 - 程序化集成")
        print("3. 重新运行 - python test_ai_tools.py")
        print()
        
        # 询问是否打开Web界面
        open_web = input("是否打开Web界面进行手动测试？(y/n): ").lower() == 'y'
        if open_web:
            open_web_interface()
            print("\n💡 提示:")
            print("- 在Web界面的'工具'页面可以测试AI功能")
            print("- 设置环境变量DASHSCOPE_API_KEY使用真实Qwen API")
            print("- 当前使用模拟模式提供演示响应")
            print("\n按 Ctrl+C 停止服务器")
            
            # 保持服务器运行
            try:
                while True:
                    time.sleep(1)
            except KeyboardInterrupt:
                print("\n🛑 正在停止服务器...")
    
    finally:
        # 清理服务器进程
        server_process.terminate()
        server_process.wait()
        print("✅ 服务器已停止")


if __name__ == "__main__":
    asyncio.run(main()) 